In [1]:
import numpy as np
import cv2 as cv
from matplotlib import pyplot as plt

# get gradient:
# ref: https://docs.opencv.org/3.4/da/d22/tutorial_py_canny.html
# Canny Edge detection:
# - Noise Reduction!!!
# - Get gradient and direction
# - Non-maximum Suppression & Hysteresis Thresholding
def canny_edge(path):
    img = cv.imread(path,0)
    edges = cv.Canny(img,100,200)
    
    im_rgb = cv.cvtColor(cv.imread(path), cv.COLOR_BGR2RGB)
    plt.figure(figsize=(15,5))
    plt.subplot(131),plt.imshow(im_rgb)
    plt.title('Original RGB Gray Image of '+ path), plt.xticks([]), plt.yticks([])
    plt.subplot(132),plt.imshow(img,cmap = 'gray')
    plt.title('Original Gray Image'), plt.xticks([]), plt.yticks([])
    plt.subplot(133),plt.imshow(edges,cmap = 'gray')
    plt.title('Edge Image'), plt.xticks([]), plt.yticks([])
    plt.show()
    
    return edges
In [2]:
import numpy as np
import matplotlib.pyplot as plt

from skimage import data, img_as_float
from skimage.metrics import structural_similarity as ssim
from skimage.metrics import mean_squared_error as mse
import cv2 as cv
from skimage.metrics import structural_similarity as ssim

def mse_(path1, path2):
    # path_= 'input.jpg'
    image1 = cv.imread(path1)
    image1 = cv.cvtColor(image1,cv.COLOR_BGR2GRAY) #  将图像转换为灰度图

    # path_= 'output_0.jpg'
    image2 = cv.imread(path2)
    image2 = cv.cvtColor(image2,cv.COLOR_BGR2GRAY) #  将图像转换为灰度图

    sim = mse(image1, image2)

#     plt.subplot(121),plt.imshow(image1,cmap = 'gray')
#     plt.title('Original Image: '+path1), plt.xticks([]), plt.yticks([])
#     plt.subplot(122),plt.imshow(image2,cmap = 'gray')
#     plt.title('Output Image: '+path2), plt.xticks([]), plt.yticks([])
#     plt.show()
    print("MSE:", sim)


def ssim_(path1, path2):
    # path_= 'input.jpg'
    image1 = cv.imread(path1)
    image1 = cv.cvtColor(image1,cv.COLOR_BGR2GRAY) #  将图像转换为灰度图

    # path_= 'output_0.jpg'
    image2 = cv.imread(path2)
    image2 = cv.cvtColor(image2,cv.COLOR_BGR2GRAY) #  将图像转换为灰度图

    sim = ssim(image1, image2)
    plt.subplot(121),plt.imshow(image1,cmap = 'gray')
    plt.title('Original Image: '+path1), plt.xticks([]), plt.yticks([])
    plt.subplot(122),plt.imshow(image2,cmap = 'gray')
    plt.title('Output Image: '+path2), plt.xticks([]), plt.yticks([])
    plt.show()
    print("SSIM:", sim)
In [3]:
def ssim_img(image1, image2):

    sim = ssim(image1, image2)

    plt.subplot(121),plt.imshow(image1,cmap = 'gray')
    plt.title('Original Image'), plt.xticks([]), plt.yticks([])
    plt.subplot(122),plt.imshow(image2,cmap = 'gray')
    plt.title('Output Image'), plt.xticks([]), plt.yticks([])
    plt.show()
    print("edge-SSIM:", sim)

# Not suitable to use
def mse_img(image1, image2):

    sim = mse(image1, image2)

#     plt.subplot(121),plt.imshow(image1,cmap = 'gray')
#     plt.title('Original Image'), plt.xticks([]), plt.yticks([])
#     plt.subplot(122),plt.imshow(image2,cmap = 'gray')
#     plt.title('Output Image'), plt.xticks([]), plt.yticks([])
#     plt.show()
    print("edge-MSE:", sim)
In [4]:
print("**** Test golden style ****")
edg1 = canny_edge('input.jpg')
edg2 = canny_edge('ours/output_0.jpg') # ours
edg3 = canny_edge('ours_opt/output_0.jpg') # ours
edg4 = canny_edge('dsmap/output_0.jpg') #dsmap

print()
print("****************************************************************")

print("input vs ours")
ssim_img(edg1, edg2)
ssim_('input.jpg', 'ours/output_0.jpg')

print()
print("****************************************************************")
print("input vs ours-opt")
ssim_img(edg1, edg3)
ssim_('input.jpg', 'ours_opt/output_0.jpg')

print()
print("****************************************************************")
print("input vs dsmap")
ssim_img(edg1, edg4)
ssim_('input.jpg', 'dsmap/output_0.jpg')
**** Test golden style ****
****************************************************************
input vs ours
edge-SSIM: 0.6818926587510011
SSIM: 0.7303196323115332

****************************************************************
input vs ours-opt
edge-SSIM: 0.8143807591283646
SSIM: 0.8125945560375658

****************************************************************
input vs dsmap
edge-SSIM: 0.5450863178996909
SSIM: 0.6166640107472611
In [9]:
print("**** Test challenging Golden style ****")
edg1 = canny_edge('input_14.jpg')
edg2 = canny_edge('ours/14_output_1.jpg') # ours
edg3 = canny_edge('ours_opt/14_output_1.jpg') # ours
edg4 = canny_edge('dsmap/14_output_1.jpg') #dsmap


print()
print("********************************")
print("input_14 vs ours")
ssim_img(edg1, edg2)
ssim_('input_14.jpg', 'ours/14_output_1.jpg')
mse_img(edg1, edg2)
mse_('input_14.jpg', 'ours/14_output_1.jpg')

print()
print("********************************")
print("input_14 vs ours-opt")
ssim_img(edg1, edg3)
ssim_('input_14.jpg', 'ours_opt/14_output_1.jpg')
mse_img(edg1, edg3)
mse_('input_14.jpg', 'ours_opt/14_output_1.jpg')

print()
print("********************************")
print("input_14 vs dsmap")
ssim_img(edg1, edg4)
ssim_('input_14.jpg', 'dsmap/14_output_1.jpg')
mse_img(edg1, edg4)
mse_('input_14.jpg', 'dsmap/14_output_1.jpg')
**** Test challenging Golden style ****
********************************
input_14 vs ours
edge-SSIM: 0.4016619089813951
SSIM: 0.286677638305511
edge-MSE: 9728.878784179688
MSE: 4112.635965983073

********************************
input_14 vs ours-opt
edge-SSIM: 0.5210624393889896
SSIM: 0.3722094332305752
edge-MSE: 7403.155517578125
MSE: 3982.994354248047

********************************
input_14 vs dsmap
edge-SSIM: 0.2520496469064007
SSIM: 0.32493827244967105
edge-MSE: 13572.010803222656
MSE: 2183.449696858724
In [11]:
print("**** Test challenging Blue style ****")
edg1 = canny_edge('input_18.jpg')
edg2 = canny_edge('ours/18_output_23.jpg') # ours
edg3 = canny_edge('ours_opt/18_output_23.jpg') # ours
edg4 = canny_edge('dsmap/18_output_23.jpg') #dsmap


print()
print("********************************")
print("input_18 vs ours")
ssim_img(edg1, edg2)
ssim_('input_18.jpg', 'ours/18_output_23.jpg')

print()
print("********************************")
print("input_18 vs ours-opt")
ssim_img(edg1, edg3)
ssim_('input_18.jpg', 'ours_opt/18_output_23.jpg')

print()
print("********************************")
print("input_18 vs dsmap")
ssim_img(edg1, edg4)
ssim_('input_18.jpg', 'dsmap/18_output_23.jpg')
**** Test challenging Blue style ****
********************************
input_18 vs ours
edge-SSIM: 0.528687019524189
SSIM: 0.4891096649007594

********************************
input_18 vs ours-opt
edge-SSIM: 0.7974035516861685
SSIM: 0.5982476690002758

********************************
input_18 vs dsmap
edge-SSIM: 0.5061561793117823
SSIM: 0.31818000385790357
In [12]:
print("**** Test challenging Blue style ****")
edg1 = canny_edge('input_18.jpg')
edg2 = canny_edge('ours/18_output_43.jpg') # ours
edg3 = canny_edge('ours_opt/18_output_43.jpg') # ours
edg4 = canny_edge('dsmap/18_output_43.jpg') #dsmap


print()
print("********************************")
print("input_18 vs ours")
ssim_img(edg1, edg2)
ssim_('input_18.jpg', 'ours/18_output_43.jpg')

print()
print("********************************")
print("input_18 vs ours-opt")
ssim_img(edg1, edg3)
ssim_('input_18.jpg', 'ours_opt/18_output_43.jpg')

print()
print("********************************")
print("input_18 vs dsmap")
ssim_img(edg1, edg4)
ssim_('input_18.jpg', 'dsmap/18_output_43.jpg')
**** Test challenging Blue style ****
********************************
input_18 vs ours
edge-SSIM: 0.6262334184002538
SSIM: 0.6842636665703894

********************************
input_18 vs ours-opt
edge-SSIM: 0.8324479548521894
SSIM: 0.8104880787836298

********************************
input_18 vs dsmap
edge-SSIM: 0.5482005566701473
SSIM: 0.5672060858520116
In [14]:
print("**** Test challenging dark style ****")
edg1 = canny_edge('input_19.jpg')
edg2 = canny_edge('ours/19_output_11.jpg') # ours
edg3 = canny_edge('ours_opt/19_output_11.jpg') # ours
edg4 = canny_edge('dsmap/19_output_11.jpg') #dsmap


print()
print("********************************")
print("input_19 vs ours")
ssim_img(edg1, edg2)
ssim_('input_19.jpg', 'ours/19_output_11.jpg')

print()
print("********************************")
print("input_19 vs ours-opt")
ssim_img(edg1, edg3)
ssim_('input_19.jpg', 'ours_opt/19_output_11.jpg')

print()
print("********************************")
print("input_19 vs dsmap")
ssim_img(edg1, edg4)
ssim_('input_19.jpg', 'dsmap/19_output_11.jpg')
**** Test challenging dark style ****
********************************
input_19 vs ours
edge-SSIM: 0.6996379733003116
SSIM: 0.34191323173088795

********************************
input_19 vs ours-opt
edge-SSIM: 0.7887027484415844
SSIM: 0.3847590554614435

********************************
input_19 vs dsmap
edge-SSIM: 0.5233863218112146
SSIM: -0.023493186186203
In [15]:
print("**** Test dark style ****")
edg1 = canny_edge('input_19.jpg')
edg2 = canny_edge('ours/19_output_19.jpg') # ours
edg3 = canny_edge('ours_opt/19_output_19.jpg') # ours
edg4 = canny_edge('dsmap/19_output_19.jpg') #dsmap


print()
print("********************************")
print("input_19 vs ours")
ssim_img(edg1, edg2)
ssim_('input_19.jpg', 'ours/19_output_19.jpg')

print()
print("********************************")
print("input_19 vs ours-opt")
ssim_img(edg1, edg3)
ssim_('input_19.jpg', 'ours_opt/19_output_19.jpg')

print()
print("********************************")
print("input_19 vs dsmap")
ssim_img(edg1, edg4)
ssim_('input_19.jpg', 'dsmap/19_output_19.jpg')
**** Test dark style ****
********************************
input_19 vs ours
edge-SSIM: 0.6471893278224553
SSIM: 0.3249150816919668

********************************
input_19 vs ours-opt
edge-SSIM: 0.7811387411015429
SSIM: 0.4034845769371973

********************************
input_19 vs dsmap
edge-SSIM: 0.5177731508212082
SSIM: 0.07412442401100493
In [ ]: